package com.jd.finance.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jd.finance.core.pojo.entity.User;
import com.jd.finance.result.BaseResult;
import org.apache.ibatis.annotations.Param;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author LiQingBo
 * @since 2022-05-17
 */
public interface UserService extends IService<User> {



    /**
     * 注册
     *
     * @param userAccount   账号
     * @param userPassword  密码
     * @param checkPassword 确认密码
     * @return
     */
    BaseResult userRegister(@Param("userAccount") String userAccount, @Param("userPassword") String userPassword, @Param("checkPassword") String checkPassword);

    /**
     * 用户登录
     *
     *
     * @param userAccount
     * @param userPassword
     * @param request
     * @return
     */
    BaseResult userLogin(@Param("userAccount") String userAccount, @Param("userPassword") String userPassword, @Param("request") HttpServletRequest request);

    /**
     * @param idNo      身份证号
     * @param userName  姓名
     * @param userPhone 联系电话
     * @return
     */
    BaseResult userCertifica(@Param("idNo") String idNo, @Param("userName") String userName,
                             @Param("userPhone") String userPhone, @Param("user") Integer uid);

    /**
     * 添加后台用户信息
     * @param userName
     * @param userPhone
     * @param userPassword
     * @return
     */

    /**
     * 查询个人是否实名认证
     *
     * @param uid 用户id
     * @return
     */
    BaseResult getUserCertifica(@Param("uid") Integer uid);

    /**
     * 查询个人信息
     *
     * @param userId 用户id
     * @return
     */
    BaseResult getUserInfo(@Param("uid") Integer userId);

    /**
     * 修改密码，联系电话
     *
     * @param uid          用户id
     * @param userPassword 用户密码
     * @param userPhone    用户手机号
     * @return
     */
    BaseResult updateInfo(@Param("uid") Integer uid, @Param("userPassword") String userPassword, @Param("userPhone") String userPhone);

    /**
     * 查询交易人数
     *
     * @return
     */
    BaseResult getUserCount();

    /**
     * 查询后台所有用户信息
     * @param uid
     * @return
     */
    BaseResult getAllAdminInfo(@Param("adminId") Integer uid);

    /**
     * 管理员登录
     *
     * @param userPassword 登录密码
     * @param userPhone    登录手机号
     * @param request
     * @return
     */
    BaseResult userAdminLogin(@Param("userPassword") String userPassword, @Param("userPhone") String userPhone, HttpServletRequest request);

    /**
     * 根据uid进行修改密码，手机号
     *
     * @param uid          用户id
     * @param userPhone    用户手机号
     * @param userPassword 用户密码
     * @param adminId      管理员id
     * @return
     */
    BaseResult updateUserInfo(@Param("uid") Integer uid, @Param("userPhone") String userPhone, @Param("userPassword") String userPassword, @Param("adminId") Integer adminId);


    /**
     * 查询 uid 的个人信息 便于判断 个人还是 企业
     *
     * @param uid
     */
    User getUserInfoS(Integer uid);

    /**
     * 根据uid查询还款记录
     *
     * @param uid
     * @return
     */
    User getRepayInfo(Integer uid);

    /**
     * 获取前台账号总数
     *
     * @param uid
     * @return
     */
    BaseResult getSumAccount(Integer uid);

    /**
     * 获取 所有 审核员信息
     *
     * @param uid
     * @return
     */
    BaseResult getAllAuditor(Integer uid);

    /**
     * 根据银行信贷员uid，查询所属银行信息
     *
     * @param uid
     * @return
     */
    BaseResult getBelongBankInfo(@Param("uid") Integer uid);

    /**
     * 根据uid,修改密码
     *
     * @param uid           用户(管理员)id
     * @param oldPassword   旧密码
     * @param newPassword   新密码
     * @param checkPassword 确认密码
     * @param request       servlet请求
     * @return
     */
    BaseResult updatePassword(@Param("uid") Integer uid, @Param("oldPassword") String oldPassword, @Param("newPassword") String newPassword, @Param("checkPassword") String checkPassword, @Param("request") HttpServletRequest request);

    /**
     * 根据uid，修改手机号
     *
     * @param uid       用户id
     * @param userPhone 用户手机号
     * @param request   servlet请求
     * @return
     */
    BaseResult updatePhone(@Param("uid") Integer uid, @Param("userPhone") String userPhone, @Param("request") HttpServletRequest request);

    /**
     * 扫码登录
     *
     * @param uid  用户id
     * @return
     */
    BaseResult scanCode(@Param("uid") Integer uid);

    /**
     * 根据uid删除用户表
     * @param uid
     * @param leaveId
     * @param request
     * @return
     */
    BaseResult deleteUserTableById(@Param("uid") Integer uid, @Param("leaveId") Integer leaveId, @Param("request") HttpServletRequest request);

    /**
     * 根据手机号或者姓名查询后台用户信息
     * @param uid
     * @param userInfo
     * @return
     */
    BaseResult getAdminAccountInfo(@Param("uid") Integer uid, @Param("userInfo") String userInfo);

}
